package whf.framework.ext;

import whf.framework.datasource.DataSource;
import whf.framework.ext.entity.Category;
import whf.framework.ext.entity.DictItem;

public interface DictManager {

	public abstract DictItem findDictItem(String categoryCodeOrEnumClassName, String pkOrCode);

	/**
	 * 根据字典分类查询，并做缓存<br>
	 * 几种类型不能缓存：<br>
	 * 1、queryString不为空，这意味着是动态查询字典<br>
	 * 2、有扩展字典项，一般的扩展字典项都是动态的<br>
	 * @modify wanghaifeng Dec 22, 2006 10:43:52 AM
	 * @param category
	 * @return
	 */
	public abstract DataSource<DictItem> findByCategory(Category category, String queryString);

	/**
	 * 根据字典代码查询
	 * 优先从缓存中获取，然后查询数据库
	 * @modify wanghaifeng Dec 22, 2006 10:49:39 AM
	 * @param code	字典代码或者枚举数据类型，系统会根据字典代码或者枚举类型搜索字典分类<br>
	 * 但若code在DictHelper.config中有配置则优先从DictHelper中获取
	 * @param queryString 查询字符串
	 * @return
	 */
	public abstract DataSource<DictItem> findByCategoryCode(String code, String queryString);

	/**
	 * 根据类别名称查询
	 * @modify wanghaifeng Dec 22, 2006 10:50:01 AM
	 * @param name
	 * @return
	 */
	public abstract DataSource<DictItem> findByCategoryName(String name);

	/**
	 * 通过绑定的枚举类型查看
	 * @modify wanghaifeng Jan 17, 2007 12:37:51 PM
	 * @param className
	 * @return
	 */
	public abstract DataSource<DictItem> findByEnumClassName(String className);
}